package com.jf.net.gson

import com.google.gson.TypeAdapter
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter

/**
 * BooleanTypeAdapter
 * @author JackyFlame
 * @time 2023/10/20 14:29
 * @description
 */
class BooleanTypeAdapter  : TypeAdapter<Boolean>() {

    override fun write(out: JsonWriter, value: Boolean?) {
        out.value(value)
    }

    override fun read(jr: JsonReader): Boolean? {
        return when (jr.peek()) {
            JsonToken.BOOLEAN -> jr.nextBoolean()
            JsonToken.STRING ->                 // 如果后台返回 "true" 或者 "TRUE"，则处理为 true，否则为 false
                java.lang.Boolean.parseBoolean(jr.nextString())
            JsonToken.NUMBER ->                 // 如果这个后台返回是 1 则处理为 true，否则为 false
                jr.nextInt() == 1
            JsonToken.NULL -> {
                jr.nextNull()
                null
            }
            else -> {
                jr.skipValue()
                null
            }
        }
    }
}